অ্যাপাচি ক্যামেল (Apache  Camel)

Common EIPs: Content-Based Router, Splitter, Aggregator, Message Filter

Latest Technologies - অ্যাপাচি ক্যামেল (Apache  Camel) - Enterprise Integration Patterns (EIP) | NCTB BOOK

Apache Camel-এ Common Enterprise Integration Patterns (EIPs) যেমন Content-Based Router, Splitter, Aggregator, এবং Message Filter ব্যবহৃত হয়। এগুলি বিভিন্ন মেসেজ এবং ডেটা প্রবাহকে পরিচালনা করতে সাহায্য করে। নিচে প্রতিটি EIP এর সংক্ষিপ্ত বিবরণ এবং Apache Camel-এ তাদের ব্যবহারের উদাহরণ দেওয়া হলো।

১. Content-Based Router

বর্ণনা: Content-Based Router মেসেজের কনটেন্ট অনুযায়ী বিভিন্ন গন্তব্যে মেসেজগুলোকে রাউট করে। এটি নির্ধারণ করে কোন মেসেজটি কোন পথে যাবে।

উদাহরণ:

from("direct:start")
    .choice()
        .when(simple("${body} contains 'urgent'"))
            .to("direct:urgent")
        .when(simple("${body} contains 'normal'"))
            .to("direct:normal")
        .otherwise()
            .to("direct:default");

এই উদাহরণে, মেসেজের কনটেন্ট অনুযায়ী এটি বিভিন্ন গন্তব্যে পাঠানো হচ্ছে।

২. Splitter

বর্ণনা: Splitter একটি একক মেসেজকে একাধিক অংশে ভাগ করে এবং প্রতিটি অংশকে আলাদাভাবে প্রক্রিয়া করে। এটি সাধারণত একটি তালিকা বা অ্যারে থেকে একাধিক মেসেজ তৈরি করতে ব্যবহৃত হয়।

উদাহরণ:

from("direct:start")
    .split(body().tokenize(","))
    .to("log:splitter");

এই উদাহরণে, একটি কমা দ্বারা পৃথক করা তালিকাকে আলাদা মেসেজে ভাগ করা হচ্ছে এবং প্রতিটি অংশ লগ করা হচ্ছে।

৩. Aggregator

বর্ণনা: Aggregator বিভিন্ন মেসেজকে একত্রিত করে একটি একক মেসেজ তৈরি করে। এটি একাধিক মেসেজের তথ্য সংগ্রহ করে একটি সামগ্রিক ফলাফল তৈরি করতে ব্যবহৃত হয়।

উদাহরণ:

from("direct:start")
    .aggregate(header("correlationId"), new MyAggregationStrategy())
    .completionSize(3) // 3টি মেসেজ আসার পর একত্রিত হবে
    .to("log:aggregated");

এখানে, correlationId এর ভিত্তিতে মেসেজগুলোকে একত্রিত করা হচ্ছে, এবং তিনটি মেসেজ আসার পর ফলাফল দেখা যাবে।

৪. Message Filter

বর্ণনা: Message Filter একটি নির্দিষ্ট শর্তের ভিত্তিতে মেসেজগুলোকে বাদ দেয়। এটি শুধুমাত্র নির্দিষ্ট শর্ত পূরণ করা মেসেজগুলোকে অগ্রাধিকার দেয়।

উদাহরণ:

from("direct:start")
    .filter(simple("${body} contains 'important'"))
    .to("log:filtered");

এই উদাহরণে, শুধুমাত্র "important" শব্দ যুক্ত মেসেজগুলোকে প্রক্রিয়া করা হচ্ছে এবং বাকিগুলো বাদ দেওয়া হচ্ছে।

উপসংহার

Apache Camel এ এই EIPs ব্যবহার করে আপনি আপনার মেসেজ প্রবাহকে আরও কার্যকরভাবে পরিচালনা করতে পারেন। প্রতিটি প্যাটার্ন আলাদা আলাদা সমস্যার সমাধান করতে সহায়ক, এবং এগুলির সঠিক ব্যবহার আপনার অ্যাপ্লিকেশনের দক্ষতা বৃদ্ধি করে।

Promotion